home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1997 April / macformat-049.iso / mac / Shareware Plus / Developers / dropg++ / usr / include / dev / cdvar.h next >
Encoding:
C/C++ Source or Header  |  1997-02-20  |  4.1 KB  |  105 lines  |  [TEXT/R*ch]

  1. /*
  2.  * Copyright (c) 1988 University of Utah.
  3.  * Copyright (c) 1990, 1993
  4.  *    The Regents of the University of California.  All rights reserved.
  5.  *
  6.  * This code is derived from software contributed to Berkeley by
  7.  * the Systems Programming Group of the University of Utah Computer
  8.  * Science Department.
  9.  *
  10.  * Redistribution and use in source and binary forms, with or without
  11.  * modification, are permitted provided that the following conditions
  12.  * are met:
  13.  * 1. Redistributions of source code must retain the above copyright
  14.  *    notice, this list of conditions and the following disclaimer.
  15.  * 2. Redistributions in binary form must reproduce the above copyright
  16.  *    notice, this list of conditions and the following disclaimer in the
  17.  *    documentation and/or other materials provided with the distribution.
  18.  * 3. All advertising materials mentioning features or use of this software
  19.  *    must display the following acknowledgement:
  20.  *    This product includes software developed by the University of
  21.  *    California, Berkeley and its contributors.
  22.  * 4. Neither the name of the University nor the names of its contributors
  23.  *    may be used to endorse or promote products derived from this software
  24.  *    without specific prior written permission.
  25.  *
  26.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  27.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  28.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  29.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  30.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  31.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  32.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  33.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  34.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  35.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  36.  * SUCH DAMAGE.
  37.  *
  38.  * from: Utah $Hdr: cdvar.h 1.1 90/07/09$
  39.  *
  40.  *    @(#)cdvar.h    8.1 (Berkeley) 6/10/93
  41.  */
  42.  
  43. #define    NCDISKS    8            /* max # of component disks */
  44.  
  45. /*
  46.  * A concatenated disk is described at config time by this structure.
  47.  */
  48. struct cddevice {
  49.     int    cd_unit;        /* logical unit of this cd */
  50.     int    cd_interleave;        /* interleave (DEV_BSIZE blocks) */
  51.     int    cd_flags;        /* misc. information */
  52.     int    cd_dk;            /* disk number */
  53.     dev_t    cd_dev[NCDISKS];    /* component devices */
  54. };
  55.  
  56. /* cd_flags */
  57. #define    CDF_SWAP    0x01    /* interleave should be dmmax */
  58. #define CDF_UNIFORM    0x02    /* use LCD of sizes for uniform interleave */
  59.  
  60. /*
  61.  * Component info table.
  62.  * Describes a single component of a concatenated disk.
  63.  */
  64. struct cdcinfo {
  65.     dev_t        ci_dev;     /* devno */
  66.     size_t        ci_size; /* size */
  67. };
  68.  
  69. /*
  70.  * Interleave description table.
  71.  * Computed at boot time to speed irregular-interleave lookups.
  72.  * The idea is that we interleave in "groups".  First we interleave
  73.  * evenly over all component disks up to the size of the smallest
  74.  * component (the first group), then we interleave evenly over all
  75.  * remaining disks up to the size of the next-smallest (second group),
  76.  * and so on.
  77.  *
  78.  * Each table entry describes the interleave characteristics of one
  79.  * of these groups.  For example if a concatenated disk consisted of
  80.  * three components of 5, 3, and 7 DEV_BSIZE blocks interleaved at
  81.  * DEV_BSIZE (1), the table would have three entries:
  82.  *
  83.  *    ndisk    startblk    startoff    dev
  84.  *    3    0        0        0, 1, 2
  85.  *    2    9        3        0, 2
  86.  *    1    13        5        2
  87.  *    0    -        -        -
  88.  *
  89.  * which says that the first nine blocks (0-8) are interleaved over
  90.  * 3 disks (0, 1, 2) starting at block offset 0 on any component disk,
  91.  * the next 4 blocks (9-12) are interleaved over 2 disks (0, 2) starting
  92.  * at component block 3, and the remaining blocks (13-14) are on disk
  93.  * 2 starting at offset 5.
  94.  */
  95. struct cdiinfo {
  96.     int    ii_ndisk;    /* # of disks range is interleaved over */
  97.     daddr_t    ii_startblk;    /* starting scaled block # for range */
  98.     daddr_t    ii_startoff;    /* starting component offset (block #) */
  99.     char    ii_index[NCDISKS];/* ordered list of components in range */
  100. };
  101.  
  102. #ifdef KERNEL
  103. extern    struct cddevice cddevice[];
  104. #endif
  105.